import React from "react";

// 1 创建一个函数，以with开头，要增强的组件名结尾
// 2 函数参数是一个组件（准备增强的组件）
// 3 函数内部创建一个组件（包含增强的内容）
// 4 在第3步创建的组件内的render()方法中，将要增强的内容传递到准备增强的组件内
// 5 返回增强的组件

const withCounter = (WrappedComponent) => {
  // 定义包含增强的内容的组件
  class Counter extends React.Component{
      constructor(props) {
          super(props)
          // 增强的属性
          this.state = {
               count: 0
          }
      }
      // 增强的方法
      handleCount = () => {
          this.setState({
              count: this.state.count + 1
          })
      }

      render() {
          // 在render()方法内将要增强的内容传递到WrappedComponent内
          console.log('=======',this.props)
          return (
              <WrappedComponent
                count={this.state.count}
                handleCount={this.handleCount}
                {...this.props}
              />
          )
      }
      
  }
  // 返回增强的内容的组件
  return Counter
};

export default withCounter